import hashlib

def sha256_hash_string(input_string):
    """
    对输入字符串进行SHA-256哈希。
    """
    # hashlib要求输入是字节串，所以需要encode()
    sha256_object = hashlib.sha256(input_string.encode('utf-8'))
    return sha256_object.hexdigest()

if __name__ == "__main__":
    print("--- SHA-256 基本哈希 Demo ---")

    message1 = "Hello, world!"
    hash1 = sha256_hash_string(message1)
    print(f"原字符串: '{message1}'")
    print(f"SHA-256哈希: {hash1}")
    print(f"哈希值长度 (字符数): {len(hash1)}") # 64个十六进制字符，对应256位

    print("\n--- 微小改变，巨大不同（雪崩效应）---")
    # 改变一个字符
    message2 = "Hello, World!" # 'w' 变为 'W'
    hash2 = sha256_hash_string(message2)
    print(f"原字符串: '{message2}'")
    print(f"SHA-256哈希: {hash2}")
    print("观察哈希值是否发生巨大变化：", hash1 != hash2)

    # 改变文件内容（这里用字符串模拟）
    message3 = "The quick brown fox jumps over the lazy dog."
    message4 = "The quick brown fox jumps over the lazy cog." # 'd' 变为 'c'
    hash3 = sha256_hash_string(message3)
    hash4 = sha256_hash_string(message4)
    print(f"\n字符串1: '{message3}'\nSHA-256: {hash3}")
    print(f"字符串2: '{message4}'\nSHA-256: {hash4}")
    print("观察哈希值是否发生巨大变化：", hash3 != hash4)